/**
 * PagLogin.java
 *
 * Projeto: SGA-LEDS
 *
 * Rodrigo Soares Maia IFES - Instituto Federal do Espírito Santo - Campus Serra
 */
package controleInterno.cih;

import controleInterno.cci.CtrlInterno;
import controleInterno.cdp.Colaborador;
import controleInterno.cdp.Usuario;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.ClientInfoEvent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

public class PagLogin extends GenericForwardComposer
{
    Window winLogin;
    Textbox nome, senha;
    Checkbox checkbox;
    Label msg;
    
    CtrlInterno ctrl = CtrlInterno.getInstance();

    public void onCreate$winLogin(Event event)
    {
        //se ja existir um usuario logado ele eh direcionado para a pagina principal
        if (Executions.getCurrent().getSession().getAttribute("usuario") != null)
        {
            //ctrl.abrirPaginaPrincipal();
            ctrl.redirecionarPaginaPrincipal();
            winLogin.detach();
        }

        Cookie[] c = ((HttpServletRequest) Executions.getCurrent().getNativeRequest()).getCookies();

        for (int i = 0; c != null && i < c.length; i++)
        {
            if (c[i].getName().equals("usernameSgaleds"))
            {
                nome.setText(c[i].getValue());
                if (!nome.getText().equals(""))
                {
                    checkbox.setChecked(true);
                }
                else
                {
                    checkbox.setChecked(false);
                }
            }
            else if (c[i].getName().equals("passwordSgaleds"))
            {
                senha.setText(c[i].getValue());
            }
        }
    }

    public void onClientInfo$winLogin(ClientInfoEvent event)
    {
        winLogin.setHeight(event.getDesktopHeight() + "px");
        winLogin.setWidth(event.getDesktopWidth() + "px");
    }

    public void onOK$winLogin(Event event)
    {
        onClick$entrar(event);
    }

    public void onClick$entrar(Event event)
    {
        Usuario usuario = null;

        usuario = ctrl.login(nome.getValue(), senha.getValue());

        if (usuario != null)
        {
            msg.setValue("");

            //colocando o objeto usuario na session
            Executions.getCurrent().getSession().setAttribute("usuario", usuario);
            
            Colaborador colaborador = ctrl.obterColaborador(usuario.getPessoa());
            
            Executions.getCurrent().getSession().setAttribute("colaborador", colaborador);

            //verificando o tipo de usuario e adicionando o respectivo objeto na session
//            if (usuario.getPrivilegio() == Privilegio.ADMINISTRADOR) {
//                Aluno aluno = (Aluno) ctrl.obterAluno(usuario);
//                Executions.getCurrent().getSession().setAttribute("aluno", aluno);
//            } else if (usuario.getTipo() != TipoUsuario.ADMINISTRADOR) {
//                Funcionario funcionario = (Funcionario) ctrl.obterFuncionario(usuario);
//                Executions.getCurrent().getSession().setAttribute("funcionario", funcionario);
//            }

            //TODO verificar porque o nome da janela permanece como o de quem chama
            ctrl.abrirPaginaPrincipal();
            //ctrl.redirecionarPaginaPrincipal();
            
            winLogin.detach();
        }
        else
        {
            msg.setValue("Usuário ou senha inválida!");
        }

        if (checkbox.isChecked())
        {
            ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("usernameSgaleds", nome.getText()));
            ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("passwordSgaleds", senha.getText()));
        }
        else
        {
            Cookie[] c = ((HttpServletRequest) Executions.getCurrent().getNativeRequest()).getCookies();

            for (int i = 0; c != null && i < c.length; i++)
            {
                if (c[i].getName().equals("usernameSgaleds"))
                {
                    ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("usernameSgaleds", ""));
                }
                else if (c[i].getName().equals("passwordSgaleds"))
                {
                    ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("passwordSgaleds", ""));
                }
            }
        }
    }
}
